ДЗ1 AE
Created on February 25|Last edited on February 25
Comment
Блок первый: тренируем АЕ
Я взяла базовые классы UpsampleBlock и DownsampleBlock из семинара и строила все архитектуры AE по схожему принципу:
Downsample до 1 x 1 x hidden_size, Upsamble обратно, после блока Upsamles 1d свертка, чтобы сделать 1 канал и Tanh(), чтобы перевести в [-1, 1] так как мы нормализуем изображения. Следовательно все эксперименты с моделями проводились за счет изменения количества параметров, регулированием количества каналов в каждом из блоков. Также я эспериментировала с разными размерами hidden space: 16, 32, 64. При одинаковом размере модели и времени обучения, восстановление получается лучше с меньшим hidden_size.
Все из приведенных экспериментов были проведены с Adam-ом и lr=1e-3, в качестве функции потерь использовался MSE.
Размеры моделей варьируются от 4 млн (AE MSE big), до 400 тыс. (AE MSE small)
Я не сразу начала логировать изображения, поэтому примеры есть для более менее приличных big и чуть меньше, но тоже вполне себе big.
Run set
6
Классификация
MNIST
Для классификации MNIST-а я также воспользовалась Downsample блоками и добавила два линейных слоя сверху. Получилась небольшая модель на 120 тыс. параметров, с точностью 99+% на трейне и тесте. Училась эта малышка 4 минуты, экспериментировать я с ней не стала, потому что для наших целей качества точно хватит.
Для подсчета FID я использовала активации из последней свертки.
FID автоэкодера с размером hidden-a 32 совпадает с FID изображения, зашумленного с шумом 0.1, для hidden-а 64:, для 128:
Run set
1
Omniglot
Для классификации Omniglot я взяла схожую архитерктуру, но увеличила количество каналов (и следовательно параметров).
Можно заметить довольно значительное переобучение, его можно было бы полечить, например, добавлением dropout-а или L1/L2 регуляризацией. Но качество получилось довольно неплохим по сравнению с рандомом (~71% accuracy на тесте), поэтому я решила, что для наших целей вполне хватает.
Run set
2
Классификация с помощью скрытых представлений
Тут ничего хорошего у меня не вышло. Попробовала разные классификаторы: LightGBM, SVC, LogisticRegression, KNN.
hidden size опять 16, 64, 128.
| LGBM | SVC | LogReg | KNN | |
|---|---|---|---|---|
| 16 | 1% | 2% | 2% | 2% |
| 64 | - | 4% | 5% | 4% |
| 128 | - | 4% | 5% | 4% |
Думаю, что для высокого качества, следовало сжимать изображения не в 32+ раз, а, например, в 8. Тогда информации для линейного классификатора будет больше.
Bloopers
По фану решила попробовать MSE vs L1 Loss, ничего шокируещего не произошло, c L1 особо не учится

L1 Loss

MSE
Add a comment